package com.apes.auto.autoparts.vin;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.apes.auto.autoparts.DataSource;
import com.apes.auto.autoparts.repository.AutopartsDao;
import com.apes.framework.api.DomainService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * 功能：VIN解析
 *
 * @author xul
 * @create 2019-08-14 10:37
 */
@Component
public class VinParser extends DomainService {

    @Autowired
    AutopartsDao autopartsDao;

    /***
     * 获取my_model_std_id epc_bbmc
     * @param element
     * @return
     */
    public Map parse(Map element) {
        /***
         * 传入参数： vin， pzcxid ， qccpmc
         * 返回值： dataSource data
         */
        JSONObject tempJson = new JSONObject();
        JSONObject param = new JSONObject(element);
        if (tempJson.size() == 0) tempJson = checkVIN_EPC_ID(param);
        if (tempJson.size() == 0) tempJson = checkCHX_EPC_ID(param);
        return tempJson;
    }


    /***
     * 查询车架号对照表(内部)
     * @param param
     * @return
     */
    private JSONObject checkVIN_EPC_ID(JSONObject param) {
        JSONArray queryArray = autopartsDao.checkVIN_EPC_ID(param);
        JSONObject returnJson = new JSONObject();
        if (queryArray.size() != 0) {
            JSONObject matchJson = queryArray.getJSONObject(0);
            returnJson.put("data", invoke("autoparts.commonConvert",matchJson));
            returnJson.put("dataSource", DataSource.INNER.name());
            return returnJson;
        } else {
            return returnJson;
        }
    }


    /***
     * 查询车型对照表(可能存在多个,存在多个默认选择第一个)(内部)
     * @param param
     * @return
     */
    private JSONObject checkCHX_EPC_ID(JSONObject param) {
        JSONArray queryArray = autopartsDao.checkCHX_EPC_ID(param);
        JSONObject returnJson = new JSONObject();
        if (queryArray.size() == 0) return returnJson;

        JSONObject matchJson = queryArray.getJSONObject(0); //如果存在多条，默认取第一个

        autopartsDao.insertEPC_VIN_ID(param, matchJson); // 同步写入vin匹配表

        returnJson.put("data", invoke("autoparts.commonConvert",matchJson));
        returnJson.put("dataSource", DataSource.INNER.name());
        return returnJson;
    }

    /***
     * 第三方接口
     * @param param
     * @return
     */
    private JSONObject queryVin(JSONObject param) {
        // TODO:
        return new JSONObject();
    }

}
